package com.richpay.basejava.base12;

/**
 * 内部类：类中类
 * 内部类的分类：
 * A、成员内部类：出现在成员变量位置上的类。
 * B、静态内部类：出现在成员变量位置上的静态类。
 * C、局部内部类：出现在局部变量的位置的内部类。
 * D、匿名内部类：没有名字的内部类，虽然不知道本类叫什么名字，但知道它的父类叫什么。
 */
public class InnerClassDemo {

    /**
     * 如何实例化内部类对象？
     * 外部类名.内部类名 对象名=new 外部类名().new 内部类名();
     * <p>
     * 结论：要想实例化内部类对象，必须先保证它所在的外部类对象存在。
     *
     * @param args
     */
    public static void main(String[] args) {
        Person person = new Person();
        person.show();
        System.out.println("===*===*===*===*===");
        //实例化内部类的方式一：一层一层的实例化
        Person p = new Person();
        Person.Body body = p.new Body();
        Person.Body.Heart heart = body.new Heart();
        Person.Body.Heart.HeartRoom heartRoom = heart.new HeartRoom();

        //实例化内部类的方式二：采用一层一层实例化对象的方式进行。
        Person.Body.Heart.HeartRoom hr = new Person().new Body().new Heart().new HeartRoom();
        hr.display();

    }

}
